<?php

require_once 'phpMailer/class.phpmailer.php';
$gestor_errores_antiguo = set_error_handler("miGestorDeErrores");

function agregaError($conn, $sql) {
    $e = oci_error($conn);
    trigger_error(htmlentities($e['message'], ENT_QUOTES) . " -> " . $sql, E_USER_ERROR);
}

$conn = oci_connect('egresados2', 'EGRESADOS2', '192.168.1.116/XE');
if (!$conn) {
    $e = oci_error();
    trigger_error(htmlentities($e['message'], ENT_QUOTES), E_USER_ERROR);
}
$HOY = date("d-M-y");
$DIA = date("l");
switch ($DIA) {
    case 'Monday':
        $DIA = "Lunes";
        break;
    case 'Tuesday':
        $DIA = "Martes";
        break;
    case 'Wednesday':
        $DIA = "Miercoles";
        break;
    case 'Thursday':
        $DIA = "Jueves";
        break;
    case 'Friday':
        $DIA = "Viernes";
        break;
    case 'Saturday':
        $DIA = "Sabado";
        break;
    case 'Sunday':
        $DIA = "Domingo";
        break;
}
//$HOY = "30-jun-12";
//INICIA REALIZANDO LAS FRECUENCIAS DIARIAS
$sql = "SELECT * FROM MENSAJES MEN
        INNER JOIN FRECUENCIAS FREC ON FREC.MENSAJE_ID = MEN.MENSAJEID
        INNER JOIN ENCUESTAS ENC ON ENC.ENCID = MEN.ENC_ID
        INNER JOIN COHORTES COH ON COH.ENC_ID = ENC.ENCID
        WHERE 
            MEN.MENSAJEINICIO <= '$HOY' 
        AND
            MEN.MENSAJEFIN >= '$HOY' 
        AND
            ENC.ENCFECHAFINAL >= '$HOY'";
$universoMensajes = oci_parse($conn, $sql);
if (!$universoMensajes)
    agregaError($conn, $sql);
$r = oci_execute($universoMensajes);
if (!$r)
    agregaError($conn, $sql);
while ($mensaje = oci_fetch_array($universoMensajes, OCI_ASSOC + OCI_RETURN_NULLS)) {
    $sql = "select mensajeenviado from MENSAJESLOG where MENSAJE_ID = {$mensaje["MENSAJE_ID"]} and rownum = 1";
    $mensajesEnviados = oci_parse($conn, $sql);
    if (!$mensajesEnviados)
        agregaError($conn, $sql);
    $r = oci_execute($mensajesEnviados);
    if (!$r)
        agregaError($conn, $sql);
    $existeEnviado = oci_fetch_array($mensajesEnviados, OCI_ASSOC + OCI_RETURN_NULLS);
    $sql = "select mensajeenviado,MENSAJE_ID,extract(month from mensajeenviado) as mes,extract(year from mensajeenviado) as anio,extract(day from mensajeenviado) as dia from MENSAJESLOG where MENSAJE_ID = {$mensaje["MENSAJE_ID"]} and MENSAJEENVIADO >= to_date('$HOY','dd-mm-yy')";
    $mensajesEnviados = oci_parse($conn, $sql);
    if (!$mensajesEnviados)
        agregaError($conn, $sql);
    $r = oci_execute($mensajesEnviados);
    if (!$r)
        agregaError($conn, $sql);
    $mensajesEnviados = oci_fetch_array($mensajesEnviados, OCI_ASSOC + OCI_RETURN_NULLS);
    if (is_array($existeEnviado)) {
        if ($mensaje["MENSAJETIPO"] != "primera") {
            if (mktime(0, 0, 0, $mensajesEnviados["MES"], $mensajesEnviados["DIA"], $mensajesEnviados["ANIO"]) >= mktime(0, 0, 0, date("n"), date("j"), date("Y"))) {
                continue;
            }
        }else
            continue;
    }
    if ($mensaje["FRECUENCIATIPO"] == "dia") {
        frecuenciaDiaria($mensaje, $conn);
    } elseif ($mensaje["FRECUENCIATIPO"] == "sem") {
        frecuenciaSemana($mensaje, $conn, $DIA);
    }
} //fin while ($mensaje = oci_fetch_array($universoMensajes, OCI_ASSOC+OCI_RETURN_NULLS)) {

oci_free_statement($universoMensajes);
oci_close($conn);

function frecuenciaDiaria($mensaje, $con) {
    if ($mensaje["FRECUENCIATODODIA"] == "cadaDia") {
        $sql = "select * from MENSAJESLOG WHERE MENSAJE_ID = {$mensaje["MENSAJE_ID"]} AND ROWNUM = 1 ORDER BY MENSAJEENVIADO DESC";
        $mensajesEnviados = oci_parse($con, $sql);
        if (!$mensajesEnviados)
            agregaError($con, $sql);
        $r = oci_execute($mensajesEnviados);
        if (!$r)
            agregaError($con, $sql);
        $mensajesEnviados = oci_fetch_array($mensajesEnviados, OCI_ASSOC + OCI_RETURN_NULLS);
        if (is_array($mensajesEnviados)) {
            $sql = "select (sysdate - to_date('{$mensajesEnviados["MENSAJEENVIADO"]}','dd-mm-yy')) from MENSAJESLOG where (sysdate - MENSAJEENVIADO) >= {$mensaje["FRECUENCIADIAS"]} and MENSAJE_ID = {$mensaje["MENSAJE_ID"]} ";
            $frecuencia = oci_parse($con, $sql);
            if (!$frecuencia)
                agregaError($con, $sql);
            $r = oci_execute($frecuencia);
            if (!$r)
                agregaError($con, $sql);
            $frecuencia = oci_fetch_array($frecuencia, OCI_ASSOC + OCI_RETURN_NULLS);
            if (is_array($frecuencia)) {
                asignaEgresadosParaEnvio($mensaje, $con);
            }
        } else {
            asignaEgresadosParaEnvio($mensaje, $con);
        }
    } elseif ($mensaje["FRECUENCIATODODIA"] == "todosDias") {
        asignaEgresadosParaEnvio($mensaje, $con);
    }
}

//fin function frecuenciaDiaria($mensaje, $con) {

function frecuenciaSemana($mensaje, $con, $dia) {
    $sql = "select * from MENSAJESLOG WHERE MENSAJE_ID = {$mensaje["MENSAJE_ID"]} AND ROWNUM = 1 ORDER BY MENSAJEENVIADO DESC";
//    echo $sql . "<br/>";
    $mensajesEnviados = oci_parse($con, $sql);
    if (!$mensajesEnviados)
        agregaError($con, $sql);
    $r = oci_execute($mensajesEnviados);
    if (!$r)
        agregaError($con, $sql);
    $mensajesEnviados = oci_fetch_array($mensajesEnviados, OCI_ASSOC + OCI_RETURN_NULLS);
    if (is_array($mensajesEnviados)) {
        $sql = "select (sysdate - to_date('{$mensajesEnviados["MENSAJEENVIADO"]}','dd-mm-yy')) from mensajes where (sysdate - {$mensajesEnviados["MENSAJEENVIADO"]}) >= ({$mensaje["FRECUENCIASEMANAS"]} * 7) and MENSAJE_ID = {$mensaje["MENSAJE_ID"]}  ";
        $frecuencia = oci_parse($con, $sql);
        if (!$frecuencia)
            agregaError($con, $sql);
        $r = oci_execute($frecuencia);
        if (!$r)
            agregaError($con, $sql);
        $frecuencia = oci_fetch_array($frecuencia, OCI_ASSOC + OCI_RETURN_NULLS);
        if (is_array($frecuencia)) {
            if (strpos($mensaje["FRECUENCIASEMANADIAS"], $dia))
                asignaEgresadosParaEnvio($mensaje, $con);
        }
    } else {
        if (strpos($mensaje["FRECUENCIASEMANADIAS"], $dia))
            asignaEgresadosParaEnvio($mensaje, $con);
    }
}

//fin function frecuenciaSemana($mensaje, $con) {
// función de gestión de errores

function miGestorDeErrores($errno, $errstr, $errfile, $errline) {
    if (!(error_reporting() & $errno)) {
        exit("error desconocido"); // Este código de error no está incluido en error_reporting
        return;
    }

    switch ($errno) {
        case E_USER_ERROR:
            echo "<b>ERROR</b> [$errno] $errstr<br />\n";
            echo "  Error fatal en la línea $errline en el archivo $errfile, <br/>";
            echo "PHP " . PHP_VERSION . " (" . PHP_OS . ")<br />\n";
            echo "Abortando...<br />\n";
            exit(1);
            break;

        case E_USER_WARNING:
            echo "<b>Mi WARNING</b> [$errno] $errstr<br />\n";
            break;

        case E_USER_NOTICE:
            echo "<b>Mi NOTICE</b> [$errno] $errstr<br />\n";
            break;

        default:
            echo "Tipo de error desconocido: [$errno] $errstr<br />\n";
            break;
    }

    /* No ejecutar el gestor de errores interno de PHP */
    return true;
}

function asignaEgresadosParaEnvio($mensajes, $con) {
    $sql = "select egre.email,egre.doc_id,egre.tip_doc,egre.nombre,egre.apellido1,egre.apellido2,encu.uencnombre from encuestasrespuestas enres
        inner join encuestados encu on encu.uencid = enres.encu_id
        inner join egresados_dblinks egre on egre.tip_doc = encu.tip_doc and egre.doc_id = encu.doc_id
        where enres.enc_id = {$mensajes["ENCID"]}";
    $egresados = oci_parse($con, $sql);
    if (!$egresados)
        agregaError($con, $sql);
    $r = oci_execute($egresados);
    if (!$r)
        agregaError($con, $sql);
    while ($egresado = oci_fetch_array($egresados, OCI_ASSOC + OCI_RETURN_NULLS)) {
        enviaMails($egresado["EMAIL"], $mensajes["MENSAJETEXTO"], $mensajes["MENSAJEASUNTO"]);
        $sql = "insert into MENSAJESLOG(MENSAJE_ID,DOC_ID,TIP_DOC,MENSAJEENVIADO,EMAILENVIADO) VALUES ({$mensajes["ENCID"]},'{$egresado["DOC_ID"]}','{$egresado["TIP_DOC"]}',sysdate,'{$egresado["EMAIL"]}')";
        $log = oci_parse($con, $sql);
        if (!$log)
            agregaError($con, $sql);
        $r = oci_execute($log);
        if (!$r)
            agregaError($con, $sql);
    } //fin while ($mensaje = oci_fetch_array($universoMensajes, OCI_ASSOC+OCI_RETURN_NULLS)) {
}

function enviaMails($destino, $contenido, $asunto) {
    echo ("envio destino $destino contenido $contenido asunto $asunto <br/>");
//    $mail = new PHPMailer();
//    $mail->From = "miguel.vargas@mggroup.com.co";
//    $mail->FromName = "SIEVG";
//    $mail->AddAddress($destino);
//    $mail->WordWrap = 50;                                   // Largo de las lineas
//    $mail->IsHTML(true);                                    // Podemos incluir tags html
//    $mail->Subject = $asunto;
//    $mail->Body = $contenido;
//    $mail->AltBody = strip_tags($mail->Body);             // Este es el contenido alternativo sin html
//    $mail->IsSMTP();
//    $mail->SMTPAuth = true;
//    $mail->SMTPSecure = "ssl";
//    $mail->Host = "smtp.gmail.com";
//    $mail->Port = 465;
//    $mail->Username = "miguel.vargas@mggroup.com.co";
//    $mail->Password = "miguel86";
//    $mail->Send();
    return;
}

//fin function enviaMails($destino,$contenido) {
//fin function enviaCorreo(){
?>